package es.cmesa.agui;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.JButton;

import es.cmesa.cnegocios.Produto;
import es.cmesa.dcontroladores.ControladorProduto;
import es.cmesa.fexcecoes.SemProdutosException;
import es.cmesa.dcontroladores.ControladorMesa;

public class Listar extends JInternalFrame {

	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTable table;
	private JButton btnPedir;
	private DefaultTableModel modelo;
	private JScrollPane scrollPane;
	
	static int numeroMesa;
	static String cpf;
	static String tipo;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Listar frame = new Listar(cpf, numeroMesa, tipo);
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 * @throws SemProdutosException 
	 */
	public Listar(String cpf, int numeroMesa, String tipo) throws SemProdutosException {
		this.cpf = cpf;
		this.numeroMesa = numeroMesa;
		this.tipo = tipo;
		
		setTitle("Cardapio de " + tipo);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(0, 0, 580, 215);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		setClosable(true);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 22, 543, 113);
		contentPane.add(scrollPane);
		
		table = new JTable();
		table.setRowSelectionAllowed(false);
		scrollPane.setViewportView(table);
		
		table.setAutoResizeMode(0);
		
		table.setModel(new DefaultTableModel(
			new Object[][] {
			},
			new String[] {
				"Id", "Tipo", "", "Nome", "Descri\u00E7\u00E3o", "pre\u00E7o"
			}
		) {
			Class[] columnTypes = new Class[] {
				Integer.class, String.class, Boolean.class, String.class, String.class, String.class
			};
			public Class getColumnClass(int columnIndex) {
				return columnTypes[columnIndex];
			}
			boolean[] columnEditables = new boolean[] {
				false, false, true, false, false, false
			};
			public boolean isCellEditable(int row, int column) {
				return columnEditables[column];
			}
		});
		table.getColumnModel().getColumn(0).setPreferredWidth(44);
		table.getColumnModel().getColumn(2).setPreferredWidth(24);
		table.getColumnModel().getColumn(3).setPreferredWidth(204);
		table.getColumnModel().getColumn(4).setPreferredWidth(193);
		table.getColumnModel().getColumn(5).setPreferredWidth(67);
		
		ControladorProduto controlador = new ControladorProduto();
		java.util.List<Produto> lista = controlador.listar();
				
		modelo = (DefaultTableModel) table.getModel();
		
		for(Produto pro : lista){
			Object[] linha = new Object[] { pro.getId(), pro.getTipo(), false, pro.getNome(), pro.getDescricao(), pro.getPreco() };
			if(pro.getTipo().equals(tipo)) modelo.addRow(linha);
		}
		
		btnPedir = new JButton("Pedir");
		btnPedir.setBounds(464, 146, 89, 23);
		contentPane.add(btnPedir);
		
		ButtonHandler handler = new ButtonHandler();
		btnPedir.addActionListener(handler);
	}
	
	private class ButtonHandler implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent event) {
			if(event.getSource() == btnPedir){
				for(int i=0;i<table.getRowCount();i++){
					boolean valor = (Boolean) table.getValueAt(i, 2);
					if(valor == true){
						ControladorMesa c = new ControladorMesa(10);
						if(cpf.equals("")){
							c.pedido((Integer) table.getValueAt(i, 0), numeroMesa);
						}else{
							c.pedidoLogado((Integer) table.getValueAt(i, 0), numeroMesa, cpf);
						}						
					}
				}				
			}
		}
	}
}